problems
permission denied
Our attempt with this manual has been to prevent you from having difficulties.
Experience shows that certain common progblems recur, however. In this
section we hope to address some of these problems.
- ``Permission Denied.''
- p4 slave processes are started by forks (for
slaves in the same shared-memory cluster), by the server, or by the remote
shell command. If the server is running on the target machine then that
must be configured to allow remote processes to be started. To test whether
this is your problem, try
If you still get the ``Permission denied.'' message, then the problem has
nothing to do with p4. See hosts.equiv or .rhosts in the
system man pages.
- ``More processes than message queues''
- Under the default configuration
of p4, uniprocessors, such as most workstations, cannot have multiple
process sharing memory. Thus your procgroup file for a workstation network
should always look like
The ``local'' means ``only the master on the startup machine; no local
slaves sharing memory''.
IPC
It is possible, at some cost in message-passing efficiency, to have a
cluster of processes sharing memory on a workstation, but in this case p4
must have been installed with the SYSV_IPC option set in the
OPTIONS file. The cost is that a process waiting for a message must
spin between checking for a message arriving on a socket and a message
arriving through shared memory.
- ``p4_error: local is not first entry in procgroup''
- the first line of
the procgroup file must be the ``local'' entry, specifying the number of
slaves that will be run on the master machine in addition to the master
process.
- ``gethostbyname failed 100 times''
- Check for an invalid machine name in
the procgroup file.
- ``pgm_path_name: Command not found''
- P4 tried to start the program
with the given name on a remote machine and the program did not exist.
Verify the full path name of the program.
- program hangs
- You may have failed to initialize the type and
from fields before a p4_recv. You might have used
p4_sendr between two processes at the same time, which will deadlock
if you think about it, or even if you don't. Use p4_send instead.
- program hangs or has bad data in received message
- You might have
failed to set the pointer to the incoming buffer to NULL, or to have
specifically allocated a buffer with p4_msg_alloc, before a
p4_recv.
- program ignores command-line arguments
- You might have passed
argc instead of &argc to p4_initenv.
- program runs out of memory
- You may need to call p4_msg_free
after each p4_recv, or reuse buffers by pre-allocating them.
Concept Index,Function Index,Some Common Problems and their Solutions,Top